<?php defined('SYSPATH') or die('No direct script access.');
/**
 * 外部扩展类/框架自动加载
 *
 * @author  Yellow.Chow <aultoale@gmail.com>
 * @version $Id: vendor.php 43 2012-03-09 08:24:10Z yellow.chow $
 * @license http://www.gnu.org/licenses/gpl-3.0.html    GPL 3
 */
abstract class Vendor
{

    /**
     * 注册自动加载
     *
     * @param  string  $module
     * @throws Vendor_Exception
     */
    public static function register($module)
    {
        $loader = strtolower($module).'_init_autoloader';
        if ( ! function_exists($loader))
        {
            $file = APPPATH.'vendors/'.$loader.EXT;
            if ( ! is_file($file))
            {
                throw new Vendor_Exception("初始化加载文件 :file 不存在",
                    array(':file' => $file));
            }

            require($file);

            if ( ! function_exists($loader))
            {
                throw new Vendor_Exception(":module 模块无法注册自动加载",
                    array(':module' => $module));
            }

            try
            {
                $loader();
            }
            catch (Exception $e)
            {
                throw new Vendor_Exception("注册自动加载失败：:message",
                    array(':message' => $e->getMessage()));
            }
        }
    }

}